"""
装饰器

装饰器的作用：
    在不改变原有函数的源代码的情况下，给函数增加新的功能

装饰器的功能特点：
    1.不修改已有函数的源代码
    2.给已有函数增加额外的功能

装饰器符合了开发中的OCP原则

结论：
    装饰器就是把一个函数当作参数传递给闭包的外部函数，
同时在闭包内调用这个函数，扩展了原有函数的功能。
"""


# 待装饰的函数
def comment():
    print("发表评论...")


# 1.定义一个装饰器(装饰器的本质是闭包)
def check(func):
    def inner():
        print("请先登录...")
        func()

    return inner


# 2.使用装饰器装饰函数(添加一个登录验证的功能)
comment = check(comment)
comment()
